The present invention relates to a multimedia server environment and more particularly to a movie-on-demand system of the type wherein multiple clients are serviced by video streams delivered from a central video server location.
A central server location may be composed of a plurality of disks and/or back-end servers for storing the content. To alleviate the effects of disk bandwidth limitations and to reduce movement of data from the disks to the front-end nodes, files are often cached at the front-end nodes. With a smaller number of requesters per node, a relatively large amount of buffer is required to obtain significant hit ratios.
Frequency-driven caching has been used to improve cache hit ratios. As an example, interval caching is an effective buffering method which has been used for video-on-demand servers. With interval caching, pre-fetched data, which is to be used again by another device in the near future, will be cached. The interval caching algorithms generally compute the interval between requests and, thereafter, the system will cache the videos which have the shortest predicted interval between requests.
Most frequency-driven caching algorithms, including interval caching algorithms, reduce the load uniformly on all storage devices of an array of discs (i.e., a striping group) by caching all the blocks in the intervals between the streams. It is likely, however, that a caching environment will have a non-uniform array of discs, for example, including newer discs which have greater capacity (in terms of size and speed) than have the discs which had been developed under older technology. Consequently, when applying prior art caching algorithms to the content stored in a striping group with discs of heterogeneous capacities, the higher capacity discs will be underutilized.
It is, therefore, an object of the present invention to provide a caching system and method which maximizes system performance and resource utilization.
It is another object of the invention to provide a caching system and method which selectively buffers content from certain devices in a striping group whereby there are different buffer hit ratios to different devices in a striping group.
The foregoing and other objectives are realized by the present invention wherein a small buffer is used for the selective buffering of devices of a heterogeneous striping group (i.e., striping group made of devices with unequal capacities) to match the load on each device to its capacity. The inventive caching algorithm utilizes a device access data structure, such as a disk map or disk access table, and selectively buffers the blocks read from different devices of a striping group; thereby placing different loads on the different devices of a striping group in accordance with their capacities.